// 正常版本的函数柯里化
function curry(fn) {
  // 获取函数的参数长度
  const arity = fn.length;

  return function curried(...args) {
    // 如果传递的参数数量已经达到原函数的参数数量，则直接调用原函数
    if (args.length >= arity) {
      return fn(...args);
    }

    // 否则，返回一个新的函数，等待接收剩余的参数
    return function (...moreArgs) {
      return curried(...args, ...moreArgs);
    };
  };
}

// 处理可变参数版本的函数柯里化
function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    } else {
      return function (...moreArgs) {
        return curried(...args, ...moreArgs);
      };
    }
  };
}
